#include <sys\types.h> #include <sys\stat.h> int fstat(handle,buffer); int handle; handle-р, ссылающийся на открытый файл. struct stat *buffer; указатель на структуру хранения результатов.
Описание:
Функция fstat получает информацию об открытом файле, связанным с данным handle -ром, и запоминает ее в структуре, на которую указывает buffer . Структура, тип stat которой объявлен в <sys\stat.h> , содержит следующие поля:
Поле Значение st_mode Битовая маска для информации о режиме файла. Бит S_IFCHR устанавливается, если handle ссылается на устройство. Бит S_IFREG устанавливается, если handle ссылается на обычный файл. Биты чтения/записи пользователей устанавли- ваются соответственно режиму доступа для файла. st_dev Либо номер устройства диска, содержащего файл, либо handle - в случае другого устройства. st_rdev Либо номер устройства диска,содержащего файл, либо handle - в случае другого устройства (аналогично st_dev). st_nlink Всегда 1. st_size Размер файла в байтах. st_atime Время последней модификации файла. st_mtime Время последней модификации файла (аналогично st_atime). st_ctime Время последней модификации файла (аналогично st_atime и st_mtime).
В структуре типа stat существуют три дополнительных поля, которые для MS DOS не имеют смысла.
Возвращаемое значение:
Функция fstat возвращает значение 0, если информация о статусе файла получена. Возвращаемое значение -1 свидетельствует об ошибке; в этом случае errno устанавливается в EBADF , определяя тем самым неверный файловый handle.
Замечание!
Если заданный handle ссылается на устройство, поля размера и времени в структуре stat не имеют смысла.
Пример.
#include <fcntl.h> #include <sys\types.h> #include <sys\stat.h> #include <stdio.h> struct stat buf; int fh, result; fh=open("tmp/data", O_RDONLY); . . . result=fstat(fh,&buf); if (result==0) printf("file size is %ld\n",buf.st_size);